diff --git a/drivers/hwmon/lm63.c b/drivers/hwmon/lm63.c
index 03616e1..2f1f3cf 100644
--- a/drivers/hwmon/lm63.c
+++ b/drivers/hwmon/lm63.c
@@ -23,14 +23,15 @@
  */
 
 /*
- * National LM63 Temperature Sensor
+ * National LM63/LM64 Temperature Sensor
+ * Main difference: LM 64 has -16 Kelvin temperature offset
  */
 
 #include <common.h>
 #include <i2c.h>
 #include <dtt.h>
 
-#define DTT_I2C_DEV_CODE 0x4C	/* National LM63 device */
+#define DTT_I2C_LM63_ADDR	0x4C	/* National LM63 device */
 
 #define DTT_READ_TEMP_RMT_MSB	0x01
 #define DTT_CONFIG		0x03
@@ -58,7 +59,8 @@
 	/*
 	 * Calculate sensor address and register.
 	 */
-	sensor = DTT_I2C_DEV_CODE;	/* address of lm63 is not adjustable */
+	if (!sensor)
+		sensor = DTT_I2C_LM63_ADDR;	/* legacy config */
 
 	dlen = 1;
 
@@ -79,7 +81,8 @@
 	/*
 	 * Calculate sensor address and register.
 	 */
-	sensor = DTT_I2C_DEV_CODE;	/* address of lm63 is not adjustable */
+	if (!sensor)
+		sensor = DTT_I2C_LM63_ADDR;	/* legacy config */
 
 	dlen = 1;
 	data[0] = (char)(val & 0xff);
@@ -93,6 +96,11 @@
 	return 0;
 }				/* dtt_write() */
 
+static int is_lm64(int sensor)
+{
+	return sensor && (sensor != DTT_I2C_LM63_ADDR);
+}
+
 static int _dtt_init(int sensor)
 {
 	int i;
@@ -117,14 +125,23 @@
 		return 1;
 
 	/*
+	 * Make sure PWM Lookup-Table is writeable
+	 */
+	if (dtt_write(sensor, DTT_FAN_CONFIG, 0x20) != 0)
+		return 1;
+
+	/*
 	 * Setup PWM Lookup-Table
 	 */
 	for (i = 0; i < sizeof(pwm_lookup) / sizeof(struct pwm_lookup_entry);
 	     i++) {
 		int address = DTT_PWM_LOOKUP_BASE + 2 * i;
 		val = pwm_lookup[i].temp;
+		if (is_lm64(sensor))
+			val -= 16;
 		if (dtt_write(sensor, address, val) != 0)
 			return 1;
+		val = dtt_read(sensor, address);
 		val = pwm_lookup[i].pwm;
 		if (dtt_write(sensor, address + 1, val) != 0)
 			return 1;
@@ -152,6 +169,9 @@
 	s16 temp = (dtt_read(sensor, DTT_READ_TEMP_RMT_MSB) << 8)
 	    | (dtt_read(sensor, DTT_READ_TEMP_RMT_LSB));
 
+	if (is_lm64(sensor))
+		temp += 16 << 8;
+
 	/* Ignore LSB for now, U-Boot only prints natural numbers */
 	return temp >> 8;
 }
